Apache Camel-এ choice()
এবং when()
ব্যবহার করে কন্ডিশনাল রাউটিং করা হয়। এই ফিচারটি আপনাকে একটি রাউটে বিভিন্ন শর্তের ভিত্তিতে ভিন্ন ভিন্ন পথে মেসেজগুলোকে রাউট করতে দেয়। এটি Enterprise Integration Patterns-এর Content-Based Router প্যাটার্নের মতো কাজ করে।
নিচে একটি উদাহরণ দেওয়া হলো যেখানে choice()
এবং when()
ব্যবহার করে কন্ডিশনাল রাউটিং করা হয়েছে:
import org.apache.camel.builder.RouteBuilder;
public class ConditionalRoutingRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:start")
.choice()
.when(simple("${body} contains 'urgent'")) // যদি মেসেজে 'urgent' থাকে
.to("log:urgent") // লগ করা
.when(simple("${body} contains 'normal'")) // যদি মেসেজে 'normal' থাকে
.to("log:normal") // লগ করা
.otherwise() // অন্যথায়
.to("log:default") // লগ করা
.end();
}
}
direct:start
পয়েন্ট থেকে মেসেজ গ্রহণ করা হচ্ছে।log:urgent
এ পাঠানো হচ্ছে।log:normal
এ পাঠানো হচ্ছে।log:default
এ পাঠানো হচ্ছে।import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
public class MainApp {
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
// কন্ডিশনাল রাউটিং যুক্ত করা
camelContext.addRoutes(new ConditionalRoutingRoute());
// ক্যামেল কনটেক্সট শুরু করা
camelContext.start();
// মেসেজ পাঠানো
camelContext.createProducerTemplate().sendBody("direct:start", "This is an urgent message.");
camelContext.createProducerTemplate().sendBody("direct:start", "This is a normal message.");
camelContext.createProducerTemplate().sendBody("direct:start", "This is a default message.");
// কিছু সময়ের জন্য ক্যামেল চালিয়ে রাখা
Thread.sleep(5000);
// ক্যামেল কনটেক্সট বন্ধ করা
camelContext.stop();
}
}
Apache Camel-এ choice()
এবং when()
ব্যবহার করে কন্ডিশনাল রাউটিং একটি সহজ এবং কার্যকরী পদ্ধতি। এটি আপনাকে বিভিন্ন শর্ত অনুযায়ী ভিন্ন ভিন্ন রাস্তায় মেসেজগুলোকে পরিচালনা করতে সক্ষম করে। এই ধরনের রাউটিং আপনার অ্যাপ্লিকেশনের কার্যকারিতা এবং স্থিতিশীলতা উন্নত করে।
আরও দেখুন...